The embodiments of the present invention relate to software configuration management systems. A software configuration management system (SCMS) refers to a computer-based system that tracks various attributes of software that is being developed, and therefore, continues to evolve over time. Various functional and physical attributes of the software maintained within the SCMS can be tracked, allowing the state of the software to be preserved and revisited at different points in time throughout the development cycle. For example, a user may retrieve a copy of the software as it existed at a particular time in the past.
The SCMS imposes systematic control over changes to the software by providing functions such as file versioning and merging of different versions of files that may have been worked upon, in parallel or concurrently, by a plurality of different users or development teams. An SCMS provides these types of functions to maintain integrity and traceability with respect to development efforts relating to the software throughout the development lifecycle, which may span over years.
For example, an SCMS provides functionality that allows each of one or more users to “check-out” a copy of a file maintained within the SCMS. Each user may work on his or her own checked-out copy of that file independently of other users and, therefore, concurrently with other users. This situation, where different copies are generated and distributed to different users or development teams, can produce a “branch” in the history of the file. At some point, the branches of the file may need to be merged back together. In this manner, an SCMS can provide each individual user with a controlled environment in which to develop software. Through the SCMS, a user can, for example, control when changes introduced into the software by other users will be accepted into his or her own controlled development environment.